home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 2: Applications / Linux Cubed Series 2 - Applications.iso / math / gle-3.000 / gle-3 / gle / unixscr.c < prev    next >
C/C++ Source or Header  |  1995-02-07  |  4KB  |  287 lines

  1. #include <stdio.h>
  2. #ifdef ultrix
  3. #include <cursesX.h>
  4. #else
  5. #include <curses.h>
  6. #endif
  7. #include <signal.h>
  8. #include "vaxconio.h"
  9. #define false 0
  10. #define true (!false)
  11. #define dbg if (1==1)
  12.  
  13. extern int noscreenio;
  14.  
  15. delay(int i)
  16. {}
  17. int vx_top=1,vx_bot=24;
  18. textattr()
  19. {}
  20. abort_key()
  21. {
  22.     return false;
  23. }
  24. kbhit()
  25. {
  26.     return false;
  27. }
  28. scr_gets(char *x)
  29. {
  30.     getstr(x);
  31. }
  32. clreol()
  33. {
  34.     if (noscreenio) return;
  35.     clrtoeol();
  36. }
  37. cputs(char *line)
  38. {
  39.     int x;
  40.     int y;
  41.     if (noscreenio) return;
  42.     getyx(stdscr,y,x);
  43.     mvaddstr(y,x,line);
  44. }
  45. delline()
  46. {
  47.     int x;
  48.     int y;
  49.     getyx(stdscr,y,x);
  50.     move(22,1);
  51.     clrtobot();
  52.     move(y,1);
  53.     deleteln();
  54.     move(y,x);
  55. }
  56. gotoxy(int x, int y)
  57. {
  58.     if (noscreenio) return;
  59.     if (y==25) y=24;
  60.     if (y<1) y=1;
  61.     move(y+vx_top-2,x);
  62. }
  63. insline()
  64. {
  65.     int x;
  66.     int y;
  67.     getyx(stdscr,y,x);
  68.     move(y,x);
  69.     insertln();
  70.     move(y,x);
  71.     move(22,1);
  72.     clrtobot();
  73.     move(y,x);
  74.  
  75. }
  76. putch(int char_val)
  77. {
  78.     int x;
  79.     int y;
  80.     getyx(stdscr,y,x);
  81.     mvaddch(y,x,char_val);
  82. }
  83. int scr_refresh()
  84. {
  85.     if (!noscreenio) refresh();
  86. }
  87. int scr_getch()
  88. {
  89.     if (noscreenio)
  90.            return getc(stdin);
  91.     else
  92.            return getch();
  93. }
  94.  
  95. void ctrlhandler();
  96. void ctrlhandler()
  97. {
  98.     fprintf(stderr,"ctrlhandler!\n");
  99.     exit(1);
  100. }
  101.  
  102. void trap();
  103. void trap()
  104. {
  105.     echo();
  106.     nl();
  107.     nocbreak();
  108.     endwin();
  109.     exit(1);
  110. }
  111. scr_init(char * dummy)    /* a.r. */
  112. {
  113.     static int doneinit;
  114. #if (defined ultrix || defined aix)
  115.     signal(SIGINT,trap);
  116. #endif
  117.     if (doneinit) {printf("init called twice \n"); exit();}
  118.     doneinit = true;
  119.     initscr();
  120.     scrollok(stdscr,true);
  121. #ifdef unix
  122.     if (signal(SIGINT, SIG_IGN) == SIG_ERR){
  123.         fprintf(stderr,"Unable to disable ctrl-c\n");
  124.         }
  125.     noecho();
  126.     nonl();
  127.     cbreak();
  128.     clear();
  129. /* The AIX R6000 goes looney if you set keypad to be true, */
  130. #ifndef NOKEYPAD
  131.     keypad(stdscr,TRUE);
  132. #endif
  133. #endif
  134. }
  135. scr_end()
  136. {
  137.     if (noscreenio) return;
  138.     echo();
  139.     nl();
  140.     nocbreak();
  141.     endwin();
  142. }
  143. textbackground(int color_num)
  144. {}
  145. textcolor(int colornum)
  146. {}
  147. gettextinfo(struct text_info *r)
  148. {
  149.     int x;
  150.     int y;
  151.     if (noscreenio) return;
  152.     getyx(stdscr,y,x);
  153.     r->curx = x;
  154.     r->cury = y;
  155.     r->wintop = vx_top;
  156. }
  157. screen_save()
  158. {}
  159. screen_restore()
  160. {
  161.     if (noscreenio) return;
  162.     scr_norm();
  163.     clrscr();
  164.     gotoxy(1,1);
  165.     cputs("\n");
  166. }
  167. int wyerr;
  168. w_message(char *s)
  169. {
  170.     wyerr++;
  171.     if (noscreenio) return;
  172.     scr_savexy();
  173.     gotoxy(1,wyerr);
  174.     clreol();
  175.     cputs(s);
  176.     scr_restorexy();
  177. }
  178. window(int left,int top, int right, int bottom)
  179. {
  180.     if (left==1 && top==1 && bottom==25) {
  181.     if (noscreenio) return;
  182. #ifndef unix
  183.         printf("\x1b[%d;%dr",1,24);
  184. #endif
  185.     }
  186.     vx_top = top;
  187.     vx_bot = bottom;
  188.     wyerr = 0;
  189. }
  190. clrscr()
  191. {
  192.     if (noscreenio) return;
  193.     if (vx_top==1 && vx_bot==25) {
  194.         clearok(stdscr,TRUE);
  195.         clear();
  196.         refresh();
  197.         clearok(stdscr,FALSE);
  198.         return;
  199.     }
  200.     clear();
  201. }
  202. scr_dots(int i)
  203. {
  204. }
  205. scr_left(int i)
  206. {
  207.     int y,x;
  208.     if (i<=0) return;
  209.     getyx(stdscr,y,x);
  210.     move(y,x-i);
  211. }
  212. scr_right(int i)
  213. {
  214.     int y,x;
  215.     if (i<=0) return;
  216.     getyx(stdscr,y,x);
  217.     move(y,x+i);
  218. }
  219. int vx_topsave,vx_botsave;
  220. int savex,savey;
  221. scr_savexy()
  222. {
  223.     if (noscreenio) return;
  224.     getyx(stdscr,savey,savex);
  225.     vx_topsave = vx_top;
  226.     vx_botsave = vx_bot;
  227.  
  228. }
  229. scr_restorexy()
  230. {
  231.     if (noscreenio) return;
  232.     move(savey,savex);
  233.     vx_top = vx_topsave;
  234.     vx_bot = vx_botsave;
  235. }
  236.  
  237. scr_norm()  /* yellow on blue */
  238. {
  239. #ifndef NOATTRIB
  240.     attrset(A_NORMAL);
  241. #endif
  242. }
  243. scr_inv()   /* black on white */
  244. {
  245. #ifndef NOATTRIB
  246.     attrset(A_BOLD);
  247. #endif
  248. }
  249. scr_grey()  /* black on grey */
  250. {
  251. #ifndef NOATTRIB
  252.     attrset(A_REVERSE);
  253. #endif
  254. }
  255. scr_isblackwhite()
  256. {
  257.     return true;
  258. }
  259. scr_menubg()
  260. {
  261.     scr_norm();
  262. }
  263. scr_menuval()
  264. {
  265.     scr_inv();
  266. }
  267. scr_menuhi()
  268. {
  269.  
  270.     scr_grey();
  271. }
  272.  
  273. #ifndef unix
  274. #include <descrip.h>
  275. vax_edt(char *s)     /* call the vax EDT editor */
  276. {
  277.     $DESCRIPTOR(sdesc,"");
  278.     sdesc.dsc$a_pointer = s;
  279.     sdesc.dsc$w_length = strlen(s);
  280.     edt$edit(&sdesc,&sdesc);
  281. }
  282. #else
  283. vax_edt(char *s)
  284. {}
  285. #endif
  286.  
  287.